unit OACACert;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, RzTabs, ExtCtrls, RzPanel, RzButton, StdCtrls, RzLabel, Mask,
  RzEdit, RzLstBox,OACASvr;

type
  TFormOACACert = class(TForm)
    RzPageControlMain: TRzPageControl;
    TabSheetJBXX: TRzTabSheet;
    TabSheetXX: TRzTabSheet;
    RzPanel2: TRzPanel;
    RzButtonOK: TRzButton;
    RzEditSubject: TRzEdit;
    RzLabel1: TRzLabel;
    RzLabel2: TRzLabel;
    RzEditIssuer: TRzEdit;
    RzLabel3: TRzLabel;
    RzLabel4: TRzLabel;
    RzEditValidityEnd: TRzEdit;
    RzLabel5: TRzLabel;
    RzLabel6: TRzLabel;
    RzEditLX: TRzEdit;
    RzEditValidityStart: TRzEdit;
    RzListBox1: TRzListBox;
    RzMemo1: TRzMemo;
    procedure FormCreate(Sender: TObject);
    procedure RzButtonOKClick(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
    FObjCACert: TObjCACert;
    FPList : TStrings;
    procedure ParseData;
  public
    { Public declarations }
    procedure InitData(AObjCACert:TObjCACert);
  end;

implementation

{$R *.dfm}

procedure TFormOACACert.FormCreate(Sender: TObject);
begin
  RzPageControlMain.ActivePageIndex := 0;
  FPList := TStringList.Create; 
end;

procedure TFormOACACert.FormDestroy(Sender: TObject);
begin
  FPList.Free;
end;

procedure TFormOACACert.InitData(AObjCACert: TObjCACert);
begin
  FObjCACert := AObjCACert;
  ParseData;
end;

procedure TFormOACACert.ParseData;
var
  sText,sValue : string;
  function GetListVal(AList : string;AKey:Integer):string;
  var
    i,iPos : Integer;
    sKey : string;
  begin
    Result := '';
    FPList.CommaText := AList;
    for i := 0 to FPList.Count - 1 do
    begin
      iPos := Pos('=',FPList[i]);
      if iPos > 0 then
      begin
        sKey := Copy(FPList[i],1,iPos -1);
        if AKey = StrToIntDef(sKey,-1) then
          Result := Trim(Copy(FPList[i],iPos +1,MaxInt));
      end;
    end;

  end;
begin
  RzEditSubject.Text := FObjCACert.Subject.DisplayName;
  RzEditIssuer.Text := FObjCACert.Issuer.DisplayName;
  RzEditValidityStart.Text := FObjCACert.ValidityStart;
  RzEditValidityEnd.Text := FObjCACert.ValidityEnd;

  sText := '';
  sValue := GetListVal(GListSignAlgo,FObjCACert.SignAlgo);
  if sValue <> '' then
    sText := sText + ','+ sValue;
    
  sValue := GetListVal(GListPublicAlgo,FObjCACert.PublicAlgo);
  if sValue <> '' then
    sText := sText + ','+ sValue;
  sText := sText + ','+ Format('%dλ',[FObjCACert.PublicBits]);
  if sText <> '' then
    Delete(sText,1,1);
  RzEditLX.Text := sText;
end;

procedure TFormOACACert.RzButtonOKClick(Sender: TObject);
begin
  Close;
end;



end.
